﻿using System.Linq;
using User.EF.Model;

namespace User.EF.Contracts
{
    /// <summary>
    /// Allgemeine Memberabfragen die nichts mit dem Membershipsystem zu tun haben.
    /// </summary>
    public interface IMemberQueries
    {
        /// <summary>
        /// Der Aktuelle context über den die Daten abgerufen werden können
        /// </summary>
        MainModelContainer Context { get; }

        /// <summary>
        /// Gibt die ersten X Member aus dem System zurück
        /// </summary>
        /// <param name="take">Anzahl der Member die zurückgegeben werden sollen.</param>
        /// <returns>Liste mit den Membern</returns>
        IQueryable<Member> GetMembers(int take);

        /// <summary>
        /// Sucht die ersten X Member heraus die auf den übergebenen Suchstring passen.
        /// </summary>
        /// <param name="take">Anzahl der Member die zurückgegeben werden sollen.</param>
        /// <param name="searchString">Der Suchstring</param>
        /// <returns></returns>
        IQueryable<Member> GetMembers(int take, string searchString);

        /// <summary>
        /// Gibt die Gesamtanzahl der Member im System zurück
        /// </summary>
        int MemberCount();
    }
}
